#ifndef ASTARSEARCH_H
#define ASTARSEARCH_H

#include "prerequisites.h"
#include "noderecord.h"

class AStarSearch
{
public:
	AStarSearch(Graph* graph, uint32 start, uint32 goal);
	~AStarSearch();
	void search();

	//std::vector<const Connection*> getShortestPath();
	std::list<uint32> getShortestPath();
	void printStatistics();
	
private:
	Graph* graph_;
	uint32 startNode_;
	uint32 goalNode_;
	PriorityHeap<NodeRecord>* openList_;
	std::vector<Connection*> shortestPath_;
	std::vector<NodeRecord*> nodeRecords_;

	uint32 visitedConnections_;
	uint32 iterations_;
};

#endif // ASTARSEARCH_H
